<?php
/**
 * 囤福家园
 *
 * @copyright © 2022 by 技术先锋 All rights reserved。
 * @Created   by PhpStorm.
 * @author    StarsPhp
 * @date      2023/2/7
 * @time      16:06
 */

/**
 * This file is part of workerman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.workerman.net/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

/**
 * 用于检测业务代码死循环或者长时间阻塞等问题
 * 如果发现业务卡死，可以将下面declare打开（去掉//注释），并执行php start.php reload
 * 然后观察一段时间workerman.log看是否有process_timeout异常
 */
declare(ticks=1);

use \GatewayWorker\Lib\Gateway;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;

/**
 * 主逻辑
 * 主要是处理 onConnect onMessage onClose 三个方法
 * onConnect 和 onClose 如果不需要可以不用实现并删除
 */
class Events
{
    
    /**
     * 当客户端连接时触发
     * 如果业务不需此回调可以删除onConnect
     *
     * @param string $client_id 连接id
     */
    public static function onConnect(string $client_id)
    {
        // 向连接的客户端发送 唯一id 标识 $client_id
        // Gateway::sendToClient($client_id, self::json('connect', $client_id, '连接成功'));
    }
    
    /**
     * 当客户端发来消息时触发
     *
     * @param string $client_id 连接id
     * @param mixed  $message   具体消息
     *
     * @return false|void
     * @throws DataNotFoundException
     * @throws DbException
     * @throws ModelNotFoundException
     */
    public static function onMessage(string $client_id, $message)
    {
        // return self::handleMessage($client_id, $message);
    }
    
    /**
     * 当用户断开连接时触发
     *
     * @param string $client_id 连接id
     */
    public static function onClose(string $client_id)
    {
        // Gateway::sendToClient($client_id, self::json('close', $client_id, '连接断开', [], 101));
    }
}
